﻿namespace LPLS.PluginCommon.ModulePlugin
{
    /*
     该特性功能：
   1. 该特性用于界面导航加载
   2. 通过IOC 注入单例模式（所有的关于导航界面都是单例模式）
   3.注入筛选流程
    （1）ProjectID 区分项目
    （2）MoudleName 模块名称 用于 主界面左侧导航的模块名称
    （4）Version    版本号
     到版本号匹配 ==》项目号匹配==》获取模块名称==》排序index ==》按顺序加载模块
     */

    [AttributeUsage(AttributeTargets.Class, AllowMultiple = false)]
    public class ViewModelMetadataAttribute : Attribute
    {
        public string ProjectID { get; set; }
        public string ViewModelName { get; set; }
        public string Version { get; set; }
        public bool IsCommon { get; set; } = false;
        public int Index { get; set; } = 9999;
        public Lifecycle Lifecycle { get; set; }

        public ViewModelMetadataAttribute(string projectID, string viewModelName, string version, bool isCommon = false, int index = 100, Lifecycle lifecycle = Lifecycle.Transient)
        {
            ProjectID = projectID ?? throw new ArgumentNullException(nameof(projectID));
            ViewModelName = viewModelName ?? throw new ArgumentNullException(nameof(viewModelName));
            Version = version ?? throw new ArgumentNullException(nameof(version));
            IsCommon = isCommon;
            Index = index;
            Lifecycle = lifecycle;
        }
    }
}